package dao;
/**
 * -- Java中的存储
-- 数据保存在内存中
-- 优点-读写速度快
-- 缺点-程序结束后数据丢失
-- 保存到文件
-- 优点-数据可以永久保存
-- 缺点-频繁进行IO操作，效率不高
-- 数据管理不方便
-- ==============================
-- MySQL数据库new_table
-- 关系型数据库
-- DBMS 数据库管理系统
-- 数据永久保存，管理非常方便
-- 非关系型数据NoSQL：Map、K/V
-- 不是以行和列进行存储的
-- ==============================
-- 关系型数据库的使用
-- SQL语句分类
-- DDL数据定义语言、DML数据操作语言、DCL数据控制语言(非必要)、DQL数据查询语言
-- ===============================
-- 数据库实例
-- 床架数据库实例
-- 创建数据库
-- CREATE TABLE `name`
-- DEFAULT CHARACTER SET utf8
-- COLLATE utf8_bin;
-- 约束条件
-- PK-PrimaryKey	主键(唯一不重复)
-- NN-NotNull	非空
-- UQ-unique	唯一
-- B-Byte		二进制
-- UN-Unsign	无符号
-- ZF-	零填充
-- AI-	只是起到一个唯一标识的作用，用户不关心(自动递增)
-- 如果既有PK又有AI，则添加数据的时候不需要管id的值(物理主键)
-- 物理主键 --id-pk/nn/ai(表结构中在定义时候的唯一标识)
-- 逻辑主键 --(实现功能的过程当中，通过程序空置出来的唯一标识)
	-- 逻辑主键，通过Java代码控制,通过业务逻辑判断创建
-- Truncate Table把这张表销毁，并重建一个一模一样的表
	-- 导致重建，数据消失
-- ============================================================
-- SQL DML 增删改
-- INSERT 语句，sql关键字
-- delete from `person`;				-- 表中全部数据
-- delete from `person` where 1=1		-- 与上文一致
-- delete from `person` where id = 2;	-- 指定位置删除

-- truncate table person;	-- 数据删掉，id初始化
 
 -- 数据表的子查询(嵌套查询)
 -- 子查询以及多查询：从一张表中查询数据，为另张表提供使用
 -- 把子查询的多个结果给主查询用
 -- 小括号中得到的结果是一个，用等号
 -- 小括号中得到的结果是多个，用in

-- select p.id,p.code,p.name from person p where p.code_dept in(select d.code from department d where d.name = '软件开发部' or d.name = '软件测试部');
-- ============多行写代码的方式=============
-- select name from department where code in
-- (
-- select code_dept from person where name = 'wangwu'
-- );
-- ============多行写代码的方式=============
-- 把部门中有人的记录查询出来
-- 混合使用：exists、暂时命名
select * from department d
where exists
(select p.id from person p where p.code_dept=d.code);
-- join关联查询,把两张表按照指定的字段结合在一起构成临时的中间的不存在的表
-- 把一张表的数据关联到另一个表
select *	-- *指的是关联在一起的表的样子
from person p
join department d
on p.code_dept = d.code;
-- 内联查询
select *
from person p
inner join department d
on p.code_dept = d.code;
-- 内连接
-- [inner] join---左右两表有关联的才能查出来
-- left[outer] join左(外)连接---A表的所有记录都查出来，把B表关联成功的数据查出来
-- right[outer] join右(外)连接--B表的所有记录都查出来，把A表关联成功的数据查出来
-- outer外连接--除了inter之外都叫外连接
-- union并集，(没什么卵用)
-- union ALL 联合的另一种，允许重复
-- full [outre] join全外连接
-- cross join交叉连接
-- ====================================
-- 全连接,用的是矩阵中的笛卡尔积，效率最低的(不允许使用)
select *
from person p, department d		-- 使用逗号直接联合
where p.code_dept = d.code;

-- =================SQL语句格式规则================	
select distinct name	-- 注意如下代码的位置，不能搞错					-- 从数据库中选取文件
from table1																-- 要知道是哪个表
left join table2 on table1.a = tabl22.b and table1.c=table2.d			-- 关联哪个表
where condition1		-- 想要查出来的数据的条件						-- 要查的是什么
group by field having condition2										-- 分组，根据什么分组筛选					
order by field2			-- 排序											-- 排序输出出来的结果
limit n																	-- 对查询出来的结果进行limit限定，找到想要的数据


																													



 * 
 * */
public class MySQL {
	static String x = "1";
	static int y = 1;
	public static void main(String[] args) {
		System.out.println(x+y+2);
	}
}
